class Student:

    def __init__(self, name, birthday, sex):
        self.name = name
        self.__birthday = birthday
        self.__sex = sex

    # @property 通过@property注解可以访问私有属性。
    @property
    def birthday(self):
        print('准备返回', self.name, '性别')
        return self.__birthday

    # 通过@属性.setter 可以允许外部对私有属性进行设置，赋值时，该方法会被调用
    @birthday.setter
    def birthday(self, gender):
        # 在调用这段代码的时候，一样也是会去调用上面加了@property注解的方法进行set
        self.__birthday = gender
        print(self.name, '性别设置成功')


    @property
    def sex(self):
        print('准备返回', self.name, '性别')
        return self.__sex

    @sex.setter
    def sex(self, sex):
        self.__sex = sex
        print(self.__sex, '姓名设置成功')


s1 = Student('yinsc', '1994-05-27', '男')

# 输出
# 准备返回 yinsc 性别
# 1994-05-27
print(s1.birthday)

print("-" * 40)

# 输出
# yinsc 性别设置成功
# 准备返回 yinsc 性别
# 1994-07-05
s1.gender = '1994-07-05'
print(s1.birthday)
